package com.swt.dao.impl.W_impl;

import com.swt.dao.W_dao.ImagesDao;
import com.swt.domain.Image;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate5.HibernateTemplate;
import org.springframework.stereotype.Repository;

import javax.annotation.Resource;
import java.util.List;

@Repository
public class ImagesDaoImpl implements ImagesDao {
    @Resource
    private HibernateTemplate hibernateTemplate;

    /**
     * 保存图片
     * */
    @Override
    public void saveImage(Image image) {
        hibernateTemplate.save(image);
    }


    /**
     * 查询所有轮播图
     * */
    @Override
    public List<Image> listToAll(int page) {

            Session session=hibernateTemplate.getSessionFactory().getCurrentSession();
            Query query=session.createQuery("from Image");
            query.setFirstResult(page);
            query.setMaxResults(5);
            return query.list();
    }

    /**
     * 删除图片
     * */
    @Override
    public void delete(Image image) {
        hibernateTemplate.delete(image);
    }


    /**
     * 更改图片状态
     * */
    @Override
    public void changeStatus(Image image) {
        Session session=hibernateTemplate.getSessionFactory().getCurrentSession();
        Query query=session.createQuery("update Image i set i.imageStatus=?,i.imageUpdatetime=? where i.imageId=?");
        query.setParameter(0,image.getImageStatus());

        query.setParameter(1,image.getImageUpdatetime());
        query.setParameter(2,image.getImageId());
        int result=query.executeUpdate();
        System.out.println(result);
    }

    /**
     * 根据时间查询图片
     * */
    @Override
    public List<Image> search(String logmin, String logmax) {
        Session session=hibernateTemplate.getSessionFactory().getCurrentSession();
        Query query=session.createQuery("from Image where imageUpdatetime>=? and imageUpdatetime<=?");
        query.setParameter(0,logmin);
        query.setParameter(1,logmax);
        return query.list();

    }


    /**
     * 查询数据库中状态为“已发布”的数量
     * */
    public String count(){
        Session session=hibernateTemplate.getSessionFactory().getCurrentSession();
        Query query=session.createSQLQuery("select count(*) from image where image_status='已发布'");
        List list=query.list();
        String s=null;
        for (Object o : list) {
           s=o.toString();
        }
        return s;
    }

}
